Computers may emulate hardware to provide the appearance of hardware that does not actually exist to an operating system, application, logic, or process. Computers may also use emulation to partition one hardware function between multiple operating systems, applications, and so on. This emulation may also be referred to as virtualization.
Virtualization may be accomplished by mechanisms including, for example, pure software virtualization, hardware supported software virtualization, and so on. Software virtualization tends to produce general performance penalties, even when the virtualized hardware is not being employed. However, software virtualization does facilitate emulating hardware on a variety of processors, particularly if the virtualization code is written in a portable, structured manner. Hardware virtualization tends to require hardware functions to be designed into an underlying chip. Designing in virtualization hardware functions may increase the size, complexity, design time, cost, time to market, and so on, of a chip set. Furthermore, if a chip set does not initially support virtualization, it may be difficult, if not impossible to “add-on” virtualization. Additionally, if the built-in virtualization hardware functions are not employed, they still consume chip real estate, power, and so on.